Modern computing devices are becoming ubiquitous tools for personal, business, and social uses. As such, many modern computing devices are capable of connecting to various data networks, including the Internet and corporate intranets, to retrieve and receive data communications over such networks. Oftentimes, a computing device connected to one network needs to communicate with a computing device connected on a different network.
A router is a device that forwards data communications between two or more networks. To do so, routers typically include a routing table to determine the particular networks to which incoming network packets should be forwarded. Traditional core routers are dedicated hardware devices configured to support hundreds of external ports all running at line rate and a routing table with millions of entries. However, such core routers are often expensive and typically require proprietary hardware components to be used. Additionally, hardware-based routers often include less functionality and are more difficult to configure and update than other types of routers such as, for example, software-based routers.
A software router or a router cluster is a group of interconnected computing nodes (e.g., off-the-shelf servers, desktop computers, etc.) configured to operate together to route network packets between two or more networks or other end points. To operate in such a fashion, each computing node of the software router must typically keep a replica of the entire routing table. As such, as the number of networks connected to the software router grows, so too does the routing table. Consequently, the larger the routing table becomes, more time and computing resources (e.g., memory, storage, processing cycles, etc.) are required to perform a routing table lookup.